<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.JS延迟加载的方式有哪些？（5）
        //把js放在body后面
        //defer

        // 2.前端 JavaScript 中的 ECMAScript、DOM、BOM 的含义；（5）

        //ECMAScript--- ----( ECMA组织制定的一套标准)
       // DOM------(document object model, 文档对象模型)
        //BOM------(brower object model, 浏览器对象模型)
        // 3.JavaScript 的数据类型有哪些？（5）

        // 基本数据类型
        // String，Number，Boolean，Undefined，Null，Symbol
        // 引用数据类型
        // object array function

        // 4.如何进行数据类型的判断？（5）

        //1、typeof
        // 2、instance
        // 3、Object.prototype.toString.call(n1)

        // 5.null 和 undefined 的区别？什么时候会得到 undefined？（5）

        // undefined声明变量但是没有赋值，表无意义(空值)
        // Null空值，空的对象，空的对象指针

        //声明变量没有赋值时或变量提升时的变量会得到 undefined

        // 6.如何理解 null == undefined 返回 true，null === undefined 返回 false？（5）

        //  == 数值相同则返回true
        //  === 数值相同和类型也相同才会返回true

        // 7.使用 continue 或 break 终止循环时，两种方式的区别是？（5）

        // break  终止所在的所有循环
        // continue  跳出本次符合条件的循环，继续下次的循环

        // 8.如何判断字符串内是否包含指定字符？（5）

        // 使用indexOf()， lastIndexOf()
        // 或通过[索引值] 获取字符
        //    charAt (索引)

        // 9.请尽量列举出数组的方法，并且注明哪些方法会修改原数组，哪些不会；（5）

    //     会修改原数组
    //     splice(开始下标，截取长度，元素[可选])    获取数组规定范围之内的值
    //     reverse( )                  //翻转数组的元素顺序
    //     push()                      向数组末端添加数组成员，返回新数组的长度
    //     pop()                       向数组末端删除最后一个数组成员，返回被删除的数组成员
    //     unshift( )                   在数组头部添加任意个参数，返回该数组的长度
    //     shift()                      移除并且返回该数组的第一项
 
    // 不会修改原数组
    //     concat()                                连接(合并)两个或多个数组，并且返回合并之后的数组
    //     join()                                  将数组转换为字符串
    //     slice(开始下标，结束下标[不包含] )        截取数组里面的值

        // 10. 请写出下面语句的输出结果：（5）
        // var bar = true,
        //     number = 0;
        // console.log(bar + 0);//1
        // console.log(bar + "xyz");//truexyz
        // console.log(bar + true);//2
        // console.log(+true);//1
        // console.log(!'bluej');//false
        // console.log(number++);//0
        // console.log(++number);//2
        // console.log(number);//2

        // 11. 根据用户输入时间实现倒计时，输入格式错误时要有所提示（5）
        // window.prompt("请输入目标时间");
        // let endDate=new Date(window.prompt("请输入目标时间"));
        // function timeFn(endDate) {
        //     let nowDate = new Date();
        //     let tDiff = parseInt((endDate.getTime() - nowDate.getTime()) / 1000);
        //     // 时间差大于0，意味着活动未结束
        //     if (tDiff > 0) {
        //         let y = endDate.getFullYear() - nowDate.getFullYear();
        //         if(parseInt(tDiff / (60 * 60 * 24)>30)){                    
        //             let mo = endDate.getMonth() - nowDate.getMonth();
        //             let day = parseInt(tDiff / (60 * 60 * 24));
        //         }else{
        //             mo=0;
        //             day = parseInt(tDiff / (60 * 60 * 24));
        //         }
        //         let h = parseInt(tDiff / (60 * 60) % 24);
        //         let m = parseInt(tDiff / (60) % 60);
        //         let s = tDiff % 60;
        //         y = padT(y), mo = padT(mo), day = padT(day), h = padT(h), m = padT(m), s = padT(s);

        //         console.clear();
        //         console.log("距离您输入的时间还有:" + y + "年" + mo + "月" + day + "日" + h + "时" + m + "分" + s + "秒");
        //     } else {
        //         console.clear();
        //         console.log("你输入时间现在已结束!");
        //         clearInterval(timer); //停止定时器
        //     }
        // };


        // timer = setInterval(function () {
        //     timeFn(endDate);
        // }, 1000);
        // function padT(t) {
        //     return (t < 10) ? "0" + t : t;
        // }
        
        // 13.把下面数组成员排序打乱；（5）

        // var arr = [10, 20, 30, 40, 50, 60];
        // let arr11=[];
        // for(let i=0;i<arr.length;i++){
            
        //     let newarr=parseInt(Math.random()*arr.length);
        //     let index=arr[i];
        //     arr[i]=arr[newarr];
        //     arr[newarr]=arr[i];
        //     if(arr11.indexOf(arr[i])==-1){
        //         arr11.push(arr[i]);
        //     }
        //     if(arr11.length<=5){
        //         i--;
        //     }else{
        //         break;
        //     }

        // }
        // console.log(arr11);

        // 12.输出从小到大排序好的五个不重复的随机"素数",范围[10-58)；（10）
        // var arr=[];
        // for(let i=0;i<5;i++){
        //     arr[i]=Math.ceil(Math.random() * 30);//[0,100)[0,101)
        //     // arr[i]=Math.floor(Math.random() * 90+10+1);//[0,100)[0,99]
        //     if(arr[i]<10){
        //         i--;
        //     }
        //     if(arr[i]%2!=0){
        //         if(){

        //         }
        //     }
        // }
        // console.log(arr);

        // 14. 将多个数组进行去重合并；（10）

        // var arr1 = [1, 2, 3],
        //     arr2 = [2, 3, 4, 5];
        // var arr3= arr1.concat(arr2);
        // let newarr = [];
        // for (let i = 0; i < arr3.length; i++) {
        //     if (newarr.indexOf(arr3[i]) == -1) {
        //         newarr.push(arr3[i]); 
        //     }

        // }
        // console.log(newarr);
        // 15. 找出数组 arr=[1, 2, 3, "melon", 4, "melon", 2, 4, "melon"] 中重复出现过的元素,并用数组将重复元素装起来输出,并且统计每个元素出现的次数（10）
        // let arr = [1, 2, 3, "melon", 4, "melon", 2, 4, "melon"];
        // let newArr=[];
        // let count2=0;
        // let countm=0;
        // let count4=0;
        // for(let i=0;i<arr.length;i++){
        //         if(arr[i]==2){
        //                 count2++;
        //         }
        //         else if(arr[i]=="melon"){
        //                 countm++;
        //         }
        //         else if(arr[i]==4){
        //                 count4++;
        //         }
        // }
        // arr.filter(function (item, index) {
            
        //     if (arr.indexOf(item)!= arr.lastIndexOf(item)) {
                
        //         if(newArr.indexOf(item)==-1){
        //             newArr.push(item);
        //         }
                    
                    
        //         }
        // });
        //  console.log(newArr);
        //  console.log(count2,countm,count4);
        // 16. 找出数组中年龄小于18岁的女生的信息重新组成新的数组,并且将她们count变为现有的平方（10）
        // var arr = [{
        //         name: "111",
        //         sex: "boy",
        //         age: 18,
        //         count: 20
        //     },
        //     {
        //         name: "222",
        //         sex: "girl",
        //         age: 17,
        //         count: 30
        //     },
        //     {
        //         name: "333",
        //         sex: "boy",
        //         age: 16,
        //         count: 40
        //     },
        //     {
        //         name: "444",
        //         sex: "girl",
        //         age: 15,
        //         count: 50
        //     },
        //     {
        //         name: "555",
        //         sex: "boy",
        //         age: 20,
        //         count: 60
        //     },
        //     {
        //         name: "666",
        //         sex: "girl",
        //         age: 13,
        //         count: 70
        //     },
        //     {
        //         name: "777",
        //         sex: "boy",
        //         age: 14,
        //         count: 80
        //     }
        // ]
        // for (let i = 0; i < arr.length; i++) {
        //     if (arr[i].age < 18&&arr[i].sex=="girl") {
        //         arr[i].count=arr[i].count*arr[i].count;
        //         console.log(arr[i]);
        //     }
        // }
    </script>
</body>

</html>